01-Auto-Scaling개념
Auto Scaling 개념
Auto Scaling이란?
놀이공원 비유
- 평일: 방문객 적음 → 직원 적게 배치
- 주말: 방문객 많음 → 직원 많이 배치
- 연휴: 폭주 → 임시 직원까지 투입
Auto Scaling = 상황에 맞춰 직원(서버) 수를 자동 조절
현재 vs 목표 구조
현재 상황
사용자 적음: Web서버 1대 (비용 낭비)
사용자 많음: Web서버 1대 (성능 부족)
Auto Scaling 적용 후
사용자 적음: Web서버 1대 (비용 절약)
사용자 보통: Web서버 2대 (적당한 성능)
사용자 많음: Web서버 4대 (충분한 성능)
Auto Scaling의 장점
1. 비용 절약
새벽 시간 (사용자 없음):
서버 1대만 운영 → 75% 비용 절약
2. 성능 향상
점심 시간 (사용자 몰림):
서버 4대로 확장 → 4배 빠른 처리
3. 고가용성
서버 1대 고장나도:
나머지 서버들이 계속 서비스
새 서버 자동 생성
Auto Scaling 구성 요소
1. Launch Template (시작 템플릿)
- 역할: 새 서버 만들 때 사용할 설계도
- 포함 내용: AMI, 인스턴스 타입, 보안 그룹, 설치 스크립트
2. Auto Scaling Group (ASG)
- 역할: 실제 서버 개수 관리하는 매니저
- 설정: 최소/최대/원하는 서버 개수
3. Scaling Policy (스케일링 정책)
- 역할: 언제 서버를 늘리고 줄일지 결정
- 기준: CPU 사용률, 메모리 사용률, 네트워크 트래픽
실습에서 구현할 구조
Web 서버용 Auto Scaling
Launch Template: webapp-web-template
- AMI: Amazon Linux 2023
- 타입: t2.micro
- 보안 그룹: 기존 Web 서버 보안 그룹
- User Data: Apache + 프록시 설정 자동 설치
Auto Scaling Group: webapp-web-asg
- 최소: 1대
- 원하는: 2대
- 최대: 4대
- 대상 그룹: webapp-web-targets 자동 등록
스케일링 조건
Scale Out (확장):
- CPU 사용률 70% 이상 5분 지속 → 서버 1대 추가
Scale In (축소):
- CPU 사용률 30% 이하 5분 지속 → 서버 1대 제거
Auto Scaling 동작 과정
1. 평상시 (CPU 50%)
현재: 2대 서버 운영
동작: 변화 없음
2. 트래픽 증가 (CPU 80%)
1분차: CPU 80% 감지
5분차: 지속 확인 → 서버 1대 추가 시작
7분차: 새 서버 준비 완료 → 총 3대 운영
3. 트래픽 감소 (CPU 20%)
1분차: CPU 20% 감지
5분차: 지속 확인 → 서버 1대 제거 시작
7분차: 서버 제거 완료 → 총 2대 운영
Launch Template 중요성
기존 서버 설정 확인
Auto Scaling으로 만들어지는 새 서버는 기존 서버와 똑같이 동작해야 합니다:
기존 Web 서버가 하는 일:
- Apache HTTP Server 실행
- 정적 파일 직접 서비스 (
/webapp/index.html) - 동적 요청을 WAS 서버로 프록시 (
/webapp/→ Tomcat) - WAS 서버 Private IP로 올바른 프록시 설정
Launch Template에서 재현해야 할 설정
# 기존 Web 서버의 프록시 설정 확인
ssh -i webapp-keypair.pem ec2-user@Web서버-Public-IP
sudo cat /etc/httpd/conf.d/webapp-proxy.conf
# 이 설정을 Launch Template User Data에서 자동으로 생성해야 함
WAS 서버 정보 수집
Launch Template을 만들기 전에 WAS 서버 정보를 확인해둡시다.
WAS 서버 Private IP 확인
- EC2 콘솔 → 인스턴스 → WAS 서버 클릭
- 세부 정보에서 프라이빗 IPv4 주소 기록
- 예시:
10.0.2.45
WAS 서버 동작 확인
# Web 서버에서 WAS 서버 연결 테스트
ssh -i webapp-keypair.pem ec2-user@Web서버-Public-IP
curl http://WAS서버-Private-IP:8080/webapp/
# JSP 페이지가 정상 응답하는지 확인
비용 계산 예시
기존 방식 (고정 1대)
24시간 × 1대 × 0.0116달러 = 0.28달러/일
Auto Scaling 방식
새벽(6시간): 1대 × 0.0116달러 = 0.07달러
낮시간(12시간): 2대 × 0.0116달러 = 0.28달러
저녁(6시간): 3대 × 0.0116달러 = 0.21달러
총합: 0.56달러/일
더 많은 비용이지만 더 좋은 성능과 안전성을 얻습니다.
주의사항
1. 너무 민감한 설정
CPU 60% → 즉시 확장
문제: 일시적 부하에도 불필요한 확장
2. 너무 둔감한 설정
CPU 90% → 10분 후 확장
문제: 사용자가 느린 응답 경험
3. 적절한 설정 (권장)
Scale Out: CPU 70% 5분 지속
Scale In: CPU 30% 5분 지속
4. 상태 확인 (State-less 설계)
새로 생성되는 서버는 기존 서버와 완전히 독립적이어야 합니다:
- 세션 정보는 RDS나 외부 저장소에 저장
- 업로드 파일은 S3 등 공유 저장소 사용
- 로컬 파일에 의존하지 않음
완료 체크리스트
다음 개념을 이해했는지 확인:
실습 준비 정보
다음 단계에서 사용할 정보를 미리 확인해두세요:
WAS 서버 정보:
- Private IP:
10.0.x.x(실제 IP로 기록) - 포트:
8080 - 경로:
/webapp/
보안 그룹:
- Web 서버용 보안 그룹 이름
- 포트 80, 22가 열려있는지 확인
VPC/서브넷:
- VPC 이름
- Public 서브넷 2개 이름 (2a, 2c)
Auto Scaling 개념 이해 완료 이제 실제로 Launch Template을 만들어봅시다.
관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3.5-HA-Scalable-WebService/02-Application-Load-Balancer/03-ALB생성및연결, AWS EDU/Archive/조선대학교 AWS 멘토링/Edu Architecture/README